#pragma once



namespace SD_Tools
{
	class AsmHelper
	{
	private:
	public:
	private:
	public:
		static __forceinline void Jump(DWORD Address);
		static __forceinline void Call(DWORD Address);
		static __forceinline DWORD* GetStackPtr();
	};

	//************************************
	// Method:    Jump
	// Profit:	  Jumps to Address
	// FullName:  SD_Tools::AsmHelper::Jump
	// Returns:   void
	// Notes:
	// -inline Assembler - only in release compile
	//************************************
	void AsmHelper::Jump( DWORD Address )
	{
		__asm jmp Address;
	}

	//************************************
	// Method:    Call
	// Profit:	  Calls the given Address
	// FullName:  SD_Tools::AsmHelper::Call
	// Returns:   void
	// Notes:
	// -inline Assembler - only in release compile
	//************************************
	void AsmHelper::Call( DWORD Address )
	{
		__asm call Address;
	}

	//************************************
	// Method:    GetStackPtr
	// Profit:	  returns ESP
	// FullName:  SD_Tools::AsmHelper::GetStackPtr
	// Returns:   DWORD*
	// Notes:
	// -inline Assembler - only in release compile
	//************************************
	DWORD* AsmHelper::GetStackPtr()
	{
		DWORD* ReturnVal;
		__asm mov ReturnVal, esp
		return ReturnVal;
	}

}